The families of correcting codes that can be decoded iteratively are particular families of channel encoding that notably comprise LDPC codes and turbo codes. Hereinafter the expression “codes of the turbo family” will be used to denote all the correcting codes that can be represented by a parity matrix and that can be decoded iteratively by means of a message-passing algorithm.
These codes make it possible to obtain a good performance in terms of packet or bit error rate as a function of the signal-to-noise ratio, but do have two major drawbacks.
Firstly, the performance of these codes has a floor below which the error rate no longer decreases despite an increase in the signal-to-noise ratio at reception. This phenomenon is known in the field by the name “error floor”.
Secondly, the performance of these codes is substantially degraded for small packet sizes (typically of 100 to 500 bits). Indeed, even if these code families are known for making it possible to asymptotically approach the theoretical channel capacity in the sense of Shannon's theorem, the difference with respect to the capacity actually achieved, for small packet sizes, is often considerable.
A first known solution for improving the performance of codes of the turbo family consists in supplementing it with an external code, of BCH code or Reed-Solomon code type, to form a concatenated encoding scheme. This method, although effective in performance terms, has the drawback of decreasing the useful throughput of the transmission.
A second known solution, described in reference consists in analysing the spectrum of the code words in order to identify the least protected bits in the frame produced at the decoding input. Indeed, for such codes, not all the bits are equally protected and the effect of an error on a given bit is therefore not the same as that of an error on another bit. Once the set Ω of these bits has been determined, a turbo encoder inserts known bits at the positions signified by the set Ω. As a consequence, upon decoding, the set Ω and the values of the inserted bits being known, a considerable level of reliability is declared at the input of the turbo-decoder in order to improve the performance thereof. The inserted bits are then withdrawn at the output of the turbo-decoder in order to retrieve the initial information frame.
Again, this technique has the drawback of decreasing the effective yield of the code since information bits are removed and replaced by bits of known values.
A third solution, proposed in [3], consists in introducing pulses at certain positions of the input frame of the decoder. These positions are determined on the basis of the likelihood information of the bits at the decoder input. The likelihoods are sorted only according to their magnitude and the pulses are introduced one by one into the frame, starting with the least reliable likelihoods.
This method is effective, but its main flaw is that it is very complex to implement. Indeed, it appears effective for a large number of positions and is based on the principle that all the bits in the frame have the same importance, which is not the case for a code of the turbo family.
A fourth solution, described in reference [4], consists in modifying the decision rules of the decoder in order to take advantage of the diversity of the decoder.
This method only works for LDPC codes and not for other codes of the same family. Moreover it requires a complex parameterization of the decoder.
Finally, the solution described in [5], which consists in attempting to identify a certain number of erroneous nodes in the graph of the decoder in order to carry out several decoding passes, is also known. However, this method has a high degree of complexity because the proposed algorithm requires the preservation of all the messages exchanged by the decoder in the course of the various decoding attempts. Furthermore, the method described in [5] is only compatible with a particular type of decoding algorithm and only works with soft input values.